# 定义编译器和编译选项
CXX = g++
CXXFLAGS = -Wall -O2 $(INCLUDE_DIRS)
LDFLAGS = -ldeal.ii -ltrilinos_teuchoscomm -ltrilinos_teuchoscore -ltbb -lmpi_cxx -lmpi

# 设置目录和文件变量
INCLUDE_DIRS = -I/usr/include/x86_64-linux-gnu/openmpi \
               -I/usr/include/trilinos \
               -I/usr/lib/petscdir/petsc3.12/x86_64-linux-gnu-complex/include/\
               -I/usr/include/petsc
TARGET = step-3
SRCS = step-3.cc
OBJS = $(SRCS:.cc=.o)

# 默认目标
all: $(TARGET) solution.gpl solution_3d.eps final.pdf

# 生成可执行文件
$(TARGET): $(OBJS)
	$(CXX) $(CXXFLAGS) -o $@ $^ $(LDFLAGS)

# 生成目标文件
%.o: %.cc
	$(CXX) $(CXXFLAGS) -c -o $@ $<

# 生成 solution.gpl 文件
solution.gpl: $(TARGET)
	./$<

# 生成 solution_3d.eps 文件
solution_3d.eps: 1.gpl solution.gpl
	gnuplot 1.gpl

# 生成 final.pdf 文件
final.pdf: final.tex solution_3d.eps
	xelatex final.tex

# 清理生成的文件
clean:
	rm -f $(OBJS) $(TARGET) solution.gpl
	rm -f *.aux *.log *.pdf *.idx *.out *.eps *.bbl *.blg *.toc 
	rm -rf auto
